<?xml version = '1.0' encoding = 'UTF-8'?>
<HBRRepo><variables/><rulesets/><rules><rule id="1" name="OQP_BottomUp Clear What If" product="Planning"><property name="application">SalesPln</property><property name="plantype">OEP_QTP</property><property name="seeded">true</property><script type="groovy">			/*Purpose: This business rule clears  Seeded  Bottom Up what if scenarios */
			List&lt;String> NewColumnDims =[];
			List&lt;String> RowDimensions = [];
            List&lt;String> CustomDimensions=[];
            List&lt;String> CustomDimMembers=[];
			List&lt;String> fixMemberNames = operation.grid.pov*.essbaseMbrName
			List&lt;String> povMembers =[];
			int iCnt
			try{
            Application app=operation.getApplication();
			StringBuilder cscript = new StringBuilder();
			cscript.append('''SET AGGMISSG ON;\n''');
			cscript.append('''SET UPDATECALC OFF;\n''');
			def grid=operation.grid;
			List&lt;DataGrid.HeaderCell> pov=grid.getPov()
            /*Fetch  Row dimensions and their members */
			List&lt;DataGrid.Row> rows = grid.getRows()
			for (DataGrid.Row row : rows) 
			{
				List&lt;DataGrid.HeaderCell> subRows = row.getHeaders();
				for(DataGrid.HeaderCell cell : subRows) 
				  {
					  String memName = cell.getEssbaseMbrName();
                     
				   if (!RowDimensions.contains(memName))
				   {
				   RowDimensions.add('''"'''+memName +'''"''')
				  
				   }     	 
				 }        
			}
			/*Fetch Column dimensions and their members */
			for (DataGrid.HeaderCell cell : pov)
			{
			   String mbrName = cell.getEssbaseMbrName();
			   String dimType = cell.getDimensionType();
               String dimName = cell.getDimName()
			   
				if(!dimType.equals("Scenario") &amp;&amp; !dimType.equals("Simple Currency") )
				{
                        
                        povMembers.add('''@RELATIVE("'''+mbrName +'''",0)''');
                        CustomDimensions.add('''"'''+dimName+'''"''');
                        CustomDimMembers.add('''"'''+mbrName+'''"''');
				}    
			}
			/*Main Fix*/
			cscript.append('''FIX(@Relative("YearTotal",0),"OQP_Quota","BegBalance","OQP_Growth%","OEP_Working Bottom Up",&amp;OEP_CurYr,''')
              if (app.getCurrencyMode()!=CurrencyMode.SINGLE_CURRENCY)
            {
				String sCurrency =  operation.grid.pov.find { it.dimName == 'Currency' }.essbaseMbrName 
                cscript.append ('''"'''+ sCurrency +'''",''')
            }
			cscript.append(RowDimensions.join(''',''')+''')\n''')
            if (povMembers.size()>0)
            {
				cscript.append('''	FIX('''+povMembers.join(''',''')+''','''+CustomDimMembers.join(''','''))            
				cscript.append(''')\n''')
            }
            /*Clears what if scnearios*/
			cscript.append('''		ClearData "OEP_Best Case";\n''')
            cscript.append('''		ClearData "OEP_Conservative";\n''')
            cscript.append('''		ClearData "OEP_Worst Case";\n''')	
            if (povMembers.size()>0)
            {
			cscript.append('''	ENDFIX\n''')
            }
            /*Aggregate What if scenarios*/          
             if (CustomDimensions.size()>1)
             {
             	cscript.append('''		FIX("OQP_Quota","BegBalance","OQP_Growth%","OEP_Worst Case","OEP_Best Case","OEP_Conservative")\n''')
                for (iCnt=0;iCnt&lt;CustomDimensions.size()-1;iCnt++)
                {
                cscript.append('''			FIX(@RELATIVE('''+CustomDimensions[iCnt]+''',0))\n''')              
                }                
                for (iCnt=CustomDimensions.size()-1;iCnt>0;iCnt--)
                {
                cscript.append('''				AGG('''+CustomDimensions[iCnt]+''');\n''')                        
                cscript.append('''			ENDFIX\n''')
                }
                cscript.append('''			AGG('''+CustomDimensions[0]+''');\n''')
                cscript.append('''		ENDFIX\n''')
            }
            if (CustomDimensions.size()==1)
            {
            	cscript.append('''		FIX("OQP_Quota","BegBalance","OQP_Growth%","OEP_Worst Case","OEP_Best Case","OEP_Conservative")\n''')
             	cscript.append('''	 		AGG('''+CustomDimensions[0]+''');\n''')
                cscript.append('''		ENDFIX\n''')            
            }
            cscript.append('''ENDFIX\n''')

			println (cscript.toString())
			return cscript.toString();
			}catch(all) {
				throw new HspRuntimeException('Error occured while executing business rule');
			}					
		
		</script></rule></rules><components/><deployobjects><deployobject product="2" application="salespln" plantype="oep_qtp" obj_id="1" obj_type="1" name="OQP_BOTTOMUP CLEAR WHAT IF"/></deployobjects></HBRRepo>